home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Code Resources / Eclectic CDEFs / CDEF Utilities / JumpCDEF Folder / JumpCDEF Info next >
Text File  |  1997-03-06  |  2KB  |  43 lines

  1. JumpCDEF
  2. ========
  3. Copyright © Sebastiano Pilla 1996
  4. All rights reserved
  5. Original C source code Copyright © 1991-1995 by James G. Stout
  6.  
  7.  
  8.  
  9. General Informations
  10. --------------------
  11. The JumpCDEF control definition function enables debugging of 'CDEF' resources at the source level.
  12.  
  13.  
  14. Contents of the JumpCDEF folder
  15. -------------------------------
  16. - JumpCDEF Info: the documentation file you are reading now.
  17. - JumpCDEF.p: Pascal source code for the JumpCDEF 'CDEF' resource.
  18. - JumpCDEF.rsrc: ResEdit file with the compiled code of the JumpCDEF resource.
  19. - JumpCDEF.π: THINK Pascal project for compiling the JumpCDEF resource.
  20. - JumpCDEFIntf.p: Pascal source code for automating the 'CJMP' trick used by JumpCDEF
  21.  
  22.  
  23. How to use the JumpCDEF CDEF
  24. ----------------------------
  25. Include the JumpCDEF resource (found inside the JumpCDEF.rsrc file) and a custom resource of type 'CJMP', ID = 128 in the resource file of your test project. The 'CJMP' resource should be any long.
  26.  
  27. Include the source code of your control definition procedure in a test project, but with an entry point of (say) MyCDEFProc instead of Main.
  28.  
  29. In your test source, where Main is found plug the address of MyCDEFProc into the 'CJMP' resource, like:
  30.  
  31.     jmpHndl := CDEFJumpHandle(GetResource('CJMP', 128));
  32.     DetachResource(Handle(jmpHndl));
  33.     HNoPurge(Handle(jmpHndl));
  34.     if jmpHndl <> nil then jmpHndl^^.fRealDefUPP := NewControlDefProc(@MyCDEFProc);
  35.  
  36. This is done automatically for you in the JumpCDEFIntf.p file.
  37.  
  38. In your resource templates use the JumpCDEF resource ID (factory preset at 129) as the CDEF ID in the calculation of the procID field, like:
  39.  
  40.     procID := (16 * JumpCDEF res. ID) + variation code
  41.  
  42. If you have done things correctly, when the Control Manager tries to call the JumpCDEF control definition, it gets this code instead, which recovers the address of MyCDEFProc and calls it. Then you can use a source-level debugger to debug the 'CDEF' code. When it's working, change the 'CDEF' entry point to build a standalone resource.
  43.